Struts 2 provides support for internationalization and localization (i18n/l10n) by automatically creating ResourceBundles for different locales and handling locale negotiation, and allows retrieving localized text using keys through the OGNL TextProvider implementation or UI tags which look up values in properties files located based on conventions. The framework determines the locale by examining HTTP headers or a request parameter, and caches it as a session attribute, while the locale can also be overridden programmatically by implementing the LocaleProvider interface.